package com.menu.Service;

import com.menu.Pojo.User;
import com.menu.Utils.ResponseResult;
import org.springframework.web.multipart.MultipartFile;

public interface UserService {
    /**
     * 发送验证码
     * @param email
     * @return
     */
    ResponseResult sendCode(String email);

    /**
     * 注册
     * @param account
     * @param password
     * @param email
     * @param code
     * @return
     */
    ResponseResult register(String account, String password, String email, String code);

    /**
     * 查看账号是否存在
     * @param account
     * @return
     */
    ResponseResult verifyAccount(String account);

    /**
     * 查看邮箱是否已经注册
     * @param email
     * @return
     */
    ResponseResult verifyEmail(String email);

    /**
     *
     *
     * @param newPassword
     * @param email
     * @param code
     * @return
     */
    ResponseResult findPassword(String email, String code, String newPassword);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    ResponseResult getUserInfoById(Integer userId);

    /**
     * 上传头像
     * @param id
     * @param multipartFile
     * @return
     */
    ResponseResult modifyHeadImg(Integer id, MultipartFile multipartFile);

    /**
     * 用户分页查询
     * @param pageStart
     * @param pageSize
     * @return
     */
    ResponseResult selectUserByPage(Integer pageStart, Integer pageSize);

    /**
     * 模糊搜索
     * @param userInformation
     * @return
     */
    ResponseResult visualSearch(String userInformation,Integer pageStart, Integer pageSize);

    /**
     * 修改用户信息
     * @param user
     * @return
     */
    ResponseResult modifyUser(User user);

    /**
     * 性别
     * @return
     */
    ResponseResult rateSex();

    /**
     * 年龄分布
     * @return
     */
    ResponseResult rateAge();

    /**
     * 通过用户id查找
     * @return
     */
    ResponseResult selectByUserId(Integer userId);

    /**
     * 模糊查找用户
     * @param key
     * @param pageNow
     * @param pageSize
     * @return
     */
    ResponseResult findUserByNameLike(String key,Integer pageNow,Integer pageSize);

    /**
     * 根据邮箱修改邮箱
     * @param userId
     * @param email
     * @param code
     * @return
     */
    ResponseResult modifyEmail(Integer userId, String email, String code);

    /**
     * 修改密码
     * @param userId
     * @param oldPassword
     * @param newPassword
     * @return
     */
    ResponseResult modifyPassword(Integer userId, String oldPassword, String newPassword);

    /**
     * 封禁用户
     * @param userId
     * @return
     */
    ResponseResult banUserId(Integer userId,Integer state);

    /**
     * 获取用户信息
     * @param userId
     * @return
     */
    ResponseResult findByUserId(Integer userId);
}
